﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BEL;
using System.IO;


namespace Web_Guia_Digital_Georeferenciada.Mantenimientos
{
    public partial class Rubros : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Session["Comercio"] != null || Session["Cliente"] != null || Session["Usuario"] != null)
                {
                    if (Session["Usuario"] != null)
                    {
                        Usuario usu = (Usuario)Session["Usuario"];
                        lblUsuario.Text = "Usuario: " + usu.UsuarioNombre;
                    }
                }

                if (Session["Usuario"] == null)
                {
                    
                    Response.Redirect("../PaginaPrincipalBT.aspx", false);
                }
                else 
                {
                    if ((Session["Comercio"]) != null)
                    {
                        
                        Response.Redirect("../PaginaPrincipalBT.aspx", false);
                    }else if((Session["Cliente"]) != null){
                        
                        Response.Redirect("../PaginaPrincipalBT.aspx", false);
                    }
                }

                if (Session["Usuario"] == null)
                {
                    productos.Visible = false;
                    rubros.Visible = false;
                }
                else
                {
                    if (Session["Cliente"] != null)
                    {
                        usuarios.Visible = true;
                        productos.Visible = false;
                        rubros.Visible = false;
                        comercios.Visible = false;
                    }
                    else if (Session["Comercio"] != null)
                    {
                        productos.Visible = true;
                        rubros.Visible = false;
                        comercios.Visible = true;
                        usuarios.Visible = false;
                    }
                    else
                    {
                        productos.Visible = false;
                        rubros.Visible = true;
                        comercios.Visible = true;
                        usuarios.Visible = true;
                    }
                }
              if (!IsPostBack)
                {
                    //// if (Session["Usuario"] != null)
                    //   {
                    string RubId = Convert.ToString(Request.QueryString["RubId"]);
                    if (!string.IsNullOrEmpty(RubId))
                    {
                        Rubro rub = new Rubro();
                        rub.RubId = int.Parse(RubId);
                        rub = rub.BuscarRubroPorId(rub.RubId);
                        if (rub != null)
                        {
                            txtNombre.Text = rub.RubNombre;
                            cmdAceptar.Enabled = false;
                            cmdModificar.Visible = true;
                        }
                    }
                    else
                    {
                        cmdAceptar.Enabled = true;
                        cmdModificar.Visible = false;
                    }
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void cmdAceptar_Click(object sender, EventArgs e)
        {
            string Extension = string.Empty;
            string Nombre = string.Empty;

            try
            {
                if (!string.IsNullOrEmpty(txtNombre.Text))
                {

                    if (FileUpload1.HasFile)
                    {
                        Nombre = FileUpload1.FileName;
                        Extension = Path.GetExtension(Nombre);
                        if (ValidaExtension(Extension))
                        {
                            Rubro rub = new Rubro();
                            Boolean result = rub.AltaRubro(Convert.ToString(txtNombre.Text), FileUpload1.FileBytes);
                            if (result)
                            {
                                limpiarCampos();
                                lblError.Text = "El rubro se dio de alta correctamente";
                                Listar();
                            }
                        }
                        else
                        {
                            lblErrorImagen.Text = "La imagen seleccionada no es correcta";
                        }
                    }
                    else
                    {
                        lblErrorImagen.Text = "Debe seleccionar una imagen para el rubro";
                    }
                }
                else
                {
                    lblErrorNombre.Text = "El campo rubro se encuentra vacío";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        private void Listar()
        {
            List<Rubro> rubros = (new Rubro()).BuscarRubros();
            GridRubros.DataSource = rubros;
            GridRubros.DataBind();
        }

        protected void cmdModificar_Click(object sender, EventArgs e)
        {
            string Extension = string.Empty;
            string Nombre = string.Empty;

            try
            {
                string RubroId = Convert.ToString(Request.QueryString["RubId"]);
                if (!string.IsNullOrEmpty(RubroId))               
                {

                    if (!string.IsNullOrEmpty(txtNombre.Text))
                    {
                        if (FileUpload1.HasFile)
                        {
                            Nombre = FileUpload1.FileName;
                            Extension = Path.GetExtension(Nombre);
                            if (ValidaExtension(Extension))
                            {
                                Rubro rub = new Rubro();
                                Boolean result = rub.ModificarRubro(Convert.ToInt32(RubroId), Convert.ToString(txtNombre.Text), FileUpload1.FileBytes);
                                if (result)
                                {
                                    limpiarCampos();
                                    lblError.Text = "El rubro se modifico correctamente";
                                    Listar();
                                }
                            }
                            else
                            {
                                lblErrorImagen.Text = "La imagen seleccionada no es correcta";
                            }
                        }
                        else
                        {
                            lblErrorImagen.Text = "Debe seleccionar una imagen para el rubro";
                        }
                    }
                    else {
                        lblErrorNombre.Text = "El campo rubro se encuentra vacío";
                    }
                }
                else
                {
                    lblErrorImagen.Text = "Debe seleccionar un rubro para modificar";                    
                }
           
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void cmdListar_Click(object sender, EventArgs e)
        {
            lblError.Text = "";
            List<Rubro> rubros = (new Rubro()).BuscarRubros();
            GridRubros.DataSource = rubros;
            GridRubros.DataBind();
        }

        protected void cmdCancelar_Click(object sender, EventArgs e)
        {
            limpiarCampos();
        }

        public void limpiarCampos()
        {
            this.txtNombre.Text = string.Empty;
            
        }


        private void GuardarArchivo(HttpPostedFile file)
        {
            // Se carga la ruta física de la carpeta temp del sitio_
            string ruta = Server.MapPath("~/Imagenes/ImagenesRubros");

            // Si el directorio no existe, crearlo
            if (!Directory.Exists(ruta))
                Directory.CreateDirectory(ruta);

            string archivo = String.Format("{0}\\{1}", ruta, "rubro_" + Convert.ToString(txtNombre.Text) + ".jpg");

            // Verificar que el archivo no exista
            if (File.Exists(archivo))
                lblErrorImagen.Text = (String.Format("Ya existe una imagen con nombre\"{0}\".", ruta, Convert.ToString(txtNombre.Text) + ".jpg"));
            else
            {
                file.SaveAs(archivo);
            }
        }

        private Boolean ValidaExtension(string sExtension)
        {
            Boolean rel = false;
            switch (sExtension)
            {
                case ".jpg":
                case ".jpeg":
                case ".png":
                case ".gif":
                case ".bmp":
                    rel = true;
                    break;
                default:
                    rel = false;
                    break;

            }
            return rel;
        }
    }
}